package com.jxt.myapp.service;

import java.util.List;

import com.jxt.myapp.domain.Group;
import com.jxt.myapp.domain.Menu;
import com.jxt.myapp.domain.User;
import com.jxt.myapp.domain.jqgrid.JqGridParameter;

public interface IPermissionsService {

	/**
	 * 获得所有的权限组
	 * 
	 * @param jqGridParameter
	 *            jqgrid自带的分页,排序参数
	 * @return
	 */
	public List<Group> getAllGroup(JqGridParameter jqGridParameter);

	/**
	 * 获得所有的权限组数量
	 * 
	 * @return
	 */
	public long getAllGroupCount(JqGridParameter jqGridParameter);
	
	/**
	 * 获得所有的Group(多条件查询)
	 * @param jqGridParameter
	 * @return
	 */
	public List<Group> getAllGroupByParameter(JqGridParameter jqGridParameter);
	
	/**
	 * 获得所有的Group数量(多条件查询)
	 * @param jqGridParameter
	 * @return
	 */
	public long getAllGroupByParameterCount(JqGridParameter jqGridParameter);

	/**
	 * 获得所有的权限菜单
	 * 
	 * @return
	 */
	public List<Menu> getAllMenu();

	/**
	 * 根据ID找到对应的权限组
	 * 
	 * @param id
	 *            权限组ID
	 * @return
	 */
	public Group getGroupById(String id);

	/**
	 * 根据权限组ID找到指定的菜单.
	 * 
	 * @param groupId
	 * @return
	 */
	public List<String> getMenuByGroup(String groupId);

	/**
	 * 更新权限组Group
	 * 
	 * @param group
	 * @return
	 */
	public int updateGroup(Group group,String[] menus);

	/**
	 * 添加权限组Group
	 * 
	 * @param group
	 * @return
	 */
	public int addGroup(Group group,String[] menus);

	/**
	 * 删除指定的权限组.
	 * 
	 * @param groups
	 *            权限组ID集合
	 * @return
	 */
	public int[] deleteGroup(List<Group> groups);

	/**
	 * 获得所有的User
	 * @param jqGridParameter jqgrid自带分页,排序参数
	 * @param user 查询条件
	 * @return
	 */
	public List<User> getAllUser(JqGridParameter jqGridParameter);
	
	/**
	 * 获得所有的User数量
	 * @param user 查询条件
	 * @return
	 */
	public long getAllUserCount(JqGridParameter jqGridParameter);
	
	/**
	 * 获得所有的User(多条件查询)
	 * @param jqGridParameter
	 * @return
	 */
	public List<User> getAllUserByParameter(JqGridParameter jqGridParameter);
	
	/**
	 * 获得所有的User数量(多条件查询)
	 * @param jqGridParameter
	 * @return
	 */
	public long getAllUserByParameterCount(JqGridParameter jqGridParameter);
	
	
	
	/**
	 * 更新用户User
	 * 
	 * @param user
	 * @return
	 */
	public int updateUser(User user);

	/**
	 * 添加新用户
	 * 
	 * @param user
	 * @return
	 */
	public int addUser(User user);
	
	/**
	 * 根据ID获得User
	 * @param id
	 * @return
	 */
	public User getUserById(String id);
	
	/**
	 * 锁定User
	 * 
	 * @return
	 */
	public int[] deleteUser(List<User> userList);

	/**
	 * 删除对应的权限菜单.
	 * 
	 * @param groupId
	 * @return
	 */
	public int deleteGroupMenu(String groupId);

	/**
	 * 获得所有的权限组(用于下拉菜单)
	 * 
	 * @return
	 */
	public String getAllGroupToOptions();

	/**
	 * 密码更新
	 * 
	 * @param user
	 * @return
	 */
	public int updatePassword(User user);
	
	/**
	 * 获得GroupId对应的权限菜单列表
	 * @param groupId
	 * @return
	 */
	public List<Menu> getMenuByGroupId(String groupId);
	
	/**
	 * 根据登录名获得对应的User信息.
	 * @param loginName
	 * @return
	 */
	public User getUserByLoginName(String loginName) ;

}
